/*
 * The contents of this file are subject to the Mozilla Public License Version
 * 1.1 (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 * http://www.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 * for the specific language governing rights and limitations under the
 * License.
 *
 * The Original Code is the FxStruts MailReader Application.
 *
 * The Initial Developer of the Original Code is
 * Anirudh Sasikumar (http://anirudhs.chaosnet.org/).
 * Portions created by the Initial Developer are Copyright (C) 2008
 * the Initial Developer. All Rights Reserved.
 *
 * Contributor(s):
 *
*/

package com.adobe.mailreader.view
{
    import com.adobe.mailreader.events.NotifyViewEvent;
    import com.adobe.mailreader.model.MailModelLocator;

    /* This class is a hacky implementation of the mediator idea from
     * PureMVC so that the best of both worlds can work together. */
    public class ViewMediator
    {
        protected var _notificationInterests:Array = new Array();
        public var model:MailModelLocator = MailModelLocator.getInstance();
        
        public function ViewMediator()
        {
            
        }
        
        /* Set an array of event constants to have the view mediator
         * be notified of those events. */
        protected function set notificationInterests(arr:Array):void
        {
            clearListeners();			
            _notificationInterests.length = 0;
            
            _notificationInterests = arr;
            setupNotifications();
        }
        
        /* Stop listening for notifications */
        public function clearListeners():void
        {
            var len:int = _notificationInterests.length;
            
            for ( var i:int = 0; i < len; i++ )
            {
                model.removeEventListener(_notificationInterests[i] as String, handleNotification);
            }
        }
        
        /* Listen for notifications */
        public function setupNotifications():void
        {
            if ( model == null )
                return;
            
            var len:int = _notificationInterests.length;
            for ( var i:int = 0; i < len; i++ )
            {
                model.addEventListener(_notificationInterests[i] as String, handleNotification);
            }
        }				
        
        protected function handleNotification(event:NotifyViewEvent):void
        {
            trace("Warning: default mediator notification handler"); 
        }
        
    }
}